<?php

/**
 * @file barcode.php
 * @brief Clase para generar un codigo de barras
 * @author DyrTechnologies
 * @version V 1.0
 * @date Wed Oct 03 2007
 *
 *  Part of the CEFIRO dynamic web framework project
 *
 *  Copyright (C) 2007  Dyr technologies http://dyrtech.com.ve
 *
 *  This program is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

require_once(CEF_IMAGE);
/**
 * @class Clase barcode
 */

define("IMAGE_HREF",FULL_URL."barcode/barcode_gen.php?code=");

$barcode_instance = 0;

class barcode{

	private $info;
	private $name;

	/**
	 * @brief Constructor por omision y parametrico de la clase aprovechamos el hecho de que cada atributo tiene un valor por omision predefinido para no rehacer el constructor
	 *
	 * @param string $_info
	 * @param string $_name
	 * @return barcode La instancia de la clase
	 */

	public function barcode($_name='__barcode', $_info=''){

		/**
		 * @brief Se asignan los valores a los atributos de la clase barcode segun vengan dados al llamar al constructor de la misma, notar que existen valores por omision para cada atributo
		 */
		$this->info=$_info;

		/**
		 * @brief $barcode_instance es una variable para incrementar el numero de codigo de barras existentes
		 */
		global $barcode_instance;
		$barcode_instance++;

		/**
		 * @brief El nombre del widget es el tipo con el numero de la instancia que representa o el nombre pasado por omision en caso contrario
		 */

		if($_name!="__barcode")
		$this->name=$_name;
		else
		$this->name="barcode".$barcode_instance;
	}


	/**
	 * @brief Las funciones get_VAR devuelven las variables que tenga ajustadas la instancia: Direccion del Hiperenlace (href), Nombre (name), Texto (text), opciones de entrada (opt)
	 *
	 * @return string Valor de VAR
	 */

	public function get_name(){
		return $this->name;
	}

	public function get_info(){
		return $this->info;
	}

	/**
	 * @brief Las funciones set_VAR ajustan las variables de la instancia: Direccion del Hiperenlace (href), Nombre (name), Texto (text), opciones de entrada (opt)
	 */

	public function set_name($_name){
		$this->name=$_name;
	}

	public function set_info($_info){
		$this->info=$_info;
	}

	/**
	 * @brief Asigna el codigo de barras a la variable $smarty para su renderizacion
	 *
	 */
	public function display_barcode(){
		$barcode_image = new imagece($this->info,IMAGE_HREF.$this->info);
		$barcode_image = $barcode_image->display_image(true);
		global $smarty;
		$smarty->template_dir = dirname(__FILE__).'/';
		$smarty->assign( $this->name , $barcode_image);
	}
}

?>